
نحوه استفاده از socket در لاراول
"در این آموزش، نحوه استفاده از event broadcasting با استفاده از redis، socket.io و laravel-echo-server را در برنامه laravel 8/7 گام به گام راهنمایی می کنیم. ما به شما مثالی از real time broadcast message با استفاده از socket io در لاراول 8/7/6 می زنیم.""
شما به راحتی می توانید این کار را انجام دهید، فقط باید چند مرحله را برای ایجاد ارسال رویداد با استفاده از real time broadcasting در لاراول 9 دنبال کنید.
لاراول موضوع event broadcasting را ارائه می دهد، که بسیار جالب است و همچنین اجرای آن با redis و socket.io به طور خاص دشوار است. اما ما به شما آموزش گام به گام نحوه ارسال پیام با rest و socket io را در برنامه لاراول 6 می دهدیم.
برای انجام این کار زیر فقط باید چند مرحله را دنبال کنید. پس بیایید مراحل زیر را دنبال کنیم و به عنوان اعلان زمان واقعی با لاراول انجام دهیم.
مرحله 1: Laravel 9 را نصب کنید
اول از همه، ما باید برنامه جدید لاراول 9 را با استفاده از دستور زیر دریافت کنیم، زیرا از ابتدا پیش می رویم، بنابراین خط فرمان یا ترمینال خود را باز کنید و دستور زیر را اجرا کنید:
composer create-project --prefer-dist laravel/laravel blog
مرحله 2: نصب predis
در این مرحله باید predis را به عنوان دستور زیر نصب کنیم. پس بیایید دستور زیر را برای نصب predis در برنامه لاراول اجرا کنیم.
composer require predis/predis
مرحله 3: ایجاد event
در اینجا، ما باید رویدادی را برای پخش ایجاد کنیم. در فایل event باید کانال را تنظیم کنیم و message array را با کلید ارسال کنیم. بنابراین، اجازه دهید دستور زیر را برای ایجاد رویداد اجرا کنیم.
php artisan make:event SendMessage
app/Events/SendMessage.php
<?php
namespace App\Events;
use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Contracts\Broadcasting\ShouldBroadcastNow;
class SendMessage implements ShouldBroadcastNow
{
use InteractsWithSockets, SerializesModels;
public $data = ['asas'];
/**
* Create a new event instance.
*
* @return void
*/
public function __construct()
{
}
/**
* Get the channels the event should broadcast on.
*
* @return \Illuminate\Broadcasting\Channel|array
*/
public function broadcastOn()
{
return new Channel('user-channel');
}
/**
* The event's broadcast name.
*
* @return string
*/
public function broadcastAs()
{
return 'UserEvent';
}
/**
* The event's broadcast name.
*
* @return string
*/
public function broadcastWith()
{
return ['title'=>'This notification from ItSolutionStuff.com'];
}
}
مرحله 4: فایل کانفیگ را به روز کنید
در این مرحله باید تنظیمات کانفیگ را به فایل env و فایل کانفیگ دیتابیس اضافه کنیم. شما باید فایل env را با BROADCAST_DRIVER به عنوان پیکربندی redis و پایگاه داده و همچنین پیکربندی redis پایگاه داده تنظیم کنید.
بیایید فایل ها را به روز کنیم:
.env
BROADCAST_DRIVER=redis
DB_DATABASE=blog_chat
DB_USERNAME=root
DB_PASSWORD=root
REDIS_HOST=localhost
REDIS_PASSWORD=null
EDIS_PORT=6379
LARAVEL_ECHO_PORT=6001
config/database.php
....
'redis' => [
'client' => env('REDIS_CLIENT', 'predis'),
'options' => [
'cluster' => env('REDIS_CLUSTER', 'redis'),
'prefix' => env('REDIS_PREFIX', ''),
],
'default' => [
'url' => env('REDIS_URL'),
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => env('REDIS_DB', 0),
],
'cache' => [
'url' => env('REDIS_URL'),
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => env('REDIS_CACHE_DB', 1),
],
],
....
اکنون باید migration را نیز اجرا کنیم.
php artisan migrate
مرحله 5: Laravel Echo Server را نصب کنید
در این مرحله باید laravel-echo-server را در سیستم و پروژه شما نصب کنیم. پس بیایید دستور زیر را برای نصب laravel-echo-server و init اجرا کنیم.
Install laravel-echo-server
npm install -g laravel-echo-server
Init laravel-echo-server
laravel-echo-server init
شما باید کانفیگ خود را تنظیم کنید. می توانید اسکرین شات زیر را ببینید:
فایل جدید laravel-echo-server.json مانند زیر ایجاد می کند:
laravel-echo-server.json
{
"authHost": "http://localhost",
"authEndpoint": "/broadcasting/auth",
"clients": [],
"database": "redis",
"databaseConfig": {
"redis": {},
"sqlite": {
"databasePath": "/database/laravel-echo-server.sqlite"
}
},
"devMode": true,
"host": null,
"port": "6001",
"protocol": "http",
"socketio": {},
"secureOptions": 67108864,
"sslCertPath": "",
"sslKeyPath": "",
"sslCertChainPath": "",
"sslPassphrase": "",
"subscribers": {
"http": true,
"redis": true
},
"apiOriginAllow": {
"allowCors": false,
"allowOrigin": "",
"allowMethods": "",
"allowHeaders": ""
}
}
مرحله 6: npm، laravel-echo، socket.io-client را نصب کنید
در اینجا، npm را نصب می کنیم و همچنین laravel-echo، socket.io-client را نصب می کنیم. همچنین شما نیاز به کانفیگ دارید. پس بیایید دستور زیر را اجرا کنیم:
npm install
npm install laravel-echo
npm install socket.io-client
اکنون باید فایل جدید laravel-echo-setup.js را در فایل assets ایجاد کنیم.
resources/assets/js/laravel-echo-setup.js
import Echo from 'laravel-echo';
window.Echo = new Echo({
broadcaster: 'socket.io',
host: window.location.hostname + ":" + window.laravel_echo_port
});
اکنون باید فایل میکس را مانند زیر اضافه کنید:
webpack.mix.js
...
mix.js('resources/assets/js/laravel-echo-setup.js', 'public/js');
حالا باید دستور npm run را اجرا کنیم:
npm run dev
مرحله 7: فایل View را به روز کنید
اکنون باید فایل خوشامدگویی خود را به روز کنیم. بنابراین می توانید کدهای ما را مانند زیر ببینید:
resources/views/welcome.blade.php
مرحله 8: Call Event
در اینجا، ما مسیر آزمایشی جدیدی را برای فراخوانی event ایجاد خواهیم کرد. بنابراین، اجازه دهید مسیر زیر را به صورت زیر اضافه کنیم:
routes/web.php
Route::get('/t', function () {
event(new \App\Events\SendMessage());
dd('Event Run Successfully.');
});
اکنون ما آماده اجرای مثال خود هستیم، اما از موارد زیر برای اجرای پروژه خود اطمینان حاصل کنید.
شما باید سرور redis را در سیستم یا سرور خود نصب کنید. آن را می توانید با استفاده از دستور زیر نصب کنید:
sudo apt install redis-server
پس از آن می توانید laravel echo server را مانند دستور زیر راه اندازی کنید:
laravel-echo-server start
اکنون می توانید پروژه را با استفاده از دستور زیر اجرا کنید:
php artisan serve
اکنون می توانید URL زیر را در مرورگر خود باز کنید:
http://localhost:8000/
اکنون می توانید event خود را با این نشانی اینترنتی فعال کنید:
ارسال دیدگاه